package admin

import (
	"gitee.com/jikey/elk-blog/pkg/response"
	"gitee.com/jikey/elk-blog/pkg/utils"
	"github.com/gin-gonic/gin"
)

type System struct {
	Base
}

// Setting 系统设置
func (s *System) Setting(c *gin.Context) {
	data := make(map[string]interface{})

	response.HTML(c, "system/setting", data)
}

// SettingList 系统设置
func (s *System) SettingList(c *gin.Context) {
	data := make(map[string]interface{})

	utils.SetSite()
	data["rows"] = utils.Site

	response.Success(c, data)
}

// SettingUpdate 修改系统设置
func (s *System) SettingUpdate(c *gin.Context) {
	var siteMap utils.SiteMap
	cfg := utils.Config
	site := cfg.Section("site")

	if err := c.ShouldBind(&siteMap); err != nil {
		c.JSON(400, gin.H{
			"err": err.Error(),
		})
		return
	}

	site.Key("domain").SetValue(siteMap.Domain)
	site.Key("title").SetValue(siteMap.Title)
	site.Key("keyword").SetValue(siteMap.Keyword)
	site.Key("description").SetValue(siteMap.Description)
	site.Key("email").SetValue(siteMap.Email)
	site.Key("contact").SetValue(siteMap.Contact)
	site.Key("phone").SetValue(siteMap.Phone)
	site.Key("icp").SetValue(siteMap.Icp)
	site.Key("address").SetValue(siteMap.Address)
	site.Key("tpl").SetValue(siteMap.Tpl)

	// ini.ReflectFrom(cfg, &siteMap)

	if err := cfg.SaveTo("config/env.ini"); err != nil {
		return
	}

	response.Success(c, siteMap)
}

// Bak 数据备份
func (s *System) Bak(c *gin.Context) {
	data := make(map[string]interface{})

	response.HTML(c, "system/bak", data)
}

// Restore 数据还原
func (s *System) Restore(c *gin.Context) {
	data := make(map[string]interface{})

	response.HTML(c, "system/restore", data)
}
